1. Field of the Invention
This invention relates to annotating data sources, and more specifically to a system and method for generating and tracking annotations of data sources.
2. Description of Related Art
Today, electronic documents are used to enhance information availability and dissemination to a wide audience of viewers. Frequently, one of these viewers may desire to make comments regarding the content of the electronic document and store these comments for future reference. For instance, someone reading a research paper online may wish to make comments about the accuracy of the conclusions reached in that paper. This may be accomplished by annotating the research paper through the use of an annotation system. In general, annotation is the act of adding metadata (i.e., a resource that provides information about another resource) to a particular data source. To function properly, an annotation system must store some type of mapping (or link or association) between the data source and each annotation that annotates it.
With conventional annotation systems, the annotations are stored in a data stream together with the actual data source (or document) being annotated. For example, Microsoft Word has a “Comments” feature that stores annotations (or comments) regarding a document's contents in the Microsoft Word document itself. This method of annotation is metaphorically comparable to adding the comment (annotation) to the document by sticking a piece of paper with the note onto a physical hard copy of the document itself. The linking between each annotation and the data source in this case is trivial because the annotations are stored in the same data stream as the data being annotated.
However, if an annotator wants a colleague to see the annotations that were made to a document, the document with the annotations stored in it must be sent to the colleague. This is because the annotations are stored in the data stream of the document itself, or in other words reside with the document. If it is desired to have multiple users view and annotate a document, the document itself (which contains all annotations) must be sequentially sent to the users to allow them to sequentially make such combined annotations. This sequential transfer of the document from annotator to annotator quickly becomes impractical as the number of annotators grows. Further, storing annotations in the same data stream as a document is not feasible for any document the annotator cannot modify (e.g., a read-only document or any document that the user does not have permission to modify), such as a page on the World Wide Web (web page).
Thus, it is desirable to store annotations external to (or separately from) the data source (or document) being annotated. This provides a more powerful annotation system in which multiple users can concurrently annotate the document, and the annotations made by each annotator can be immediately reflected to all of the viewers. Additionally, separating annotation storage from the data source allows annotations to be made to web pages and other data sources that the annotators cannot directly modify.
However, a problem arises when annotations are stored separately from the underlying data source. In particular, the mapping or links between the data source and the separately stored annotations becomes complex if the data source is changed in terms of content, structure, or location (i.e., a new or edited document is created based on the original document). For example, deleting one paragraph or page of a long document causes the separately stored annotations to that document to no longer be correctly linked or mapped. Thus, all of the previous annotations linked to the original document do not point to the new document, or at least do not link correctly with the modified document. Thus, document annotating must start over from scratch so that all of the insight and effort put into the previous annotations are lost with respect to the new document, even those that are still relevant (e.g., those that do not relate to a modified portion of the document).
Accordingly, there is a need for a system and method of maintaining the linking between a data source and externally stored annotations across different versions of the data source, without requiring any of the linking information to be stored in the data source.